1. Technical Field
The present invention relates generally to resource management within a computing system, and more particularly, to reallocating unused resources according to both usage and fairness while maintaining the desired usage presets determined by a preallocation algorithm.
2. Description of the Related Art
Within a given computer architecture, such as a Broadband Engine, there exists a finite number of resources, such as memory or I/O, that are available for use. These resources are commonly referred to as shared resources. Typically, though, there is not a single desired use nor single user. Instead, there are usually multiple users competing for shared resources. These requests should be managed in such a way as to improve the use of the architecture construct, so as to have the most rapid response and limit the wasting of resources.
Moreover, there is a significant problem of starvation, where a user can be prevented from utilizing a given system or resource. Essentially, other users occupy the full bandwidth of a network or system. Typically, the system's or network's available bandwidth is allocated between the users wherein rules for allocation are set defining bandwidth limits depending on the class of user. Simple techniques, such as time multiplexing for applications or users and priority arbitration, have been utilized.
However, even time multiplexing and priority arbitration schemes lack controls and guarantees needed for real-time applications and usage. Essentially, applications or users can easily overrun a system or network leading to retries, long lag times, and overall poor performance. Some of the problems as a result of applications or users overrunning a system or networks are bottlenecks and denial of service. Schemes, which attempt to prevent the denial of service, usually result in wasting of resources, though.
However, once the computer system has begun operation, the allocation is not as simple as a percentage allocation. In fact, the varying users can be one of the two extremes for usage: sparse or high rate. If a user is a sparse user, the resource allocated to a sparse user can go unused. Hence, the available shared resources would be wasted. If a user is a high rate user, other competing user could be backlogged with pending requests for the shared resource. To alleviate the problem of backlogged requests and dead time on resources, algorithms, known as fairness algorithms, have been developed to reallocate the unused time on the shared resources to other requesters with pending requests.
A problem with according fairness is that it can skew the intended target allocation. High rate users can in fact steal bandwidth from more sparse users. By stealing the bandwidth, the preallocation percentages of use can be rendered virtually meaningless. The reason is that, thus far, there has not been an algorithm in place to reset the usage to the preallocation levels.
Therefore, there is a need for a method and/or apparatus for controlling the usage of resources that addresses at least some of the problems associated with conventional methods and apparatuses for controlling resources.